#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N=2e5;
#define INF 0x7fffffff
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
int edge[510][510];
void solve()
{
	int n,m;
	sd(n);sd(m);
	vector<int> ufs(n*m,-1);
	auto find_root=[&ufs](int x)
	{
		while(ufs[x]>=0)
			x=ufs[x];

		return x;
	};
	for(int i=0;i<n;i++)
	{
		for(int j=0;i<m;j++)
		{
			sd(edge[i][j]);
		}
	}

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(edge[i][j]==1)
			{
				int root1=find_root(i);
				int root2=find_root(j);
				if(root1!=root2)
				{
					ufs[root1]+=ufs[root2];
					ufs[root2]=root1;
				}
			}
		}
	}
	




}

int main()
{
	int T;
	sd(T);
	while (T--)
	{
		solve();
	}
	return 0;
}